package cn.tedu.spring.life;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * 测试类(使用及销毁阶段)
 */
public class TestLife {
    public static void main(String[] args) {
        /*
            用ApplicationContext实例化对象时 因为无法控制IoC容器的关闭 因此无法将
            @PreDestroy标签标记的逻辑体现 因此需要做以下调整(附解释)

            ApplicationContext是一个接口 其实例化的对象没有关闭IoC容器的方法
            而它的实现类 AnnotationConfigApplicationContext中有相关方法

            因此 可以创建ApplicationContext实现类的对象打点执行关闭方法
                context.close()
            但是一般情况下不会进行手动关闭操作
         */
//        ApplicationContext context = new AnnotationConfigApplicationContext(
//                "cn.tedu.spring.life");
        AnnotationConfigApplicationContext context = new
                AnnotationConfigApplicationContext("cn.tedu.spring.life");
        Life life = context.getBean(Life.class);
        // 4.使用阶段
        System.out.println("4.开发者使用阶段:"+life);

        // 关闭容器
        context.close();

    }
}
